/*	
*	File: pcraft-tool.h
*	Date: 2011/11/01
*	User: Ronmaru
*	Desctiption: Header file for pcraft-tool
*/

#ifndef PCRAFT_TOOL_H
#define PCRAFT_TOOL_H

#include "ip_hdrincl-option.h"
#include "raw-proto.h"

#include "mac-address-type.h"

#include "ethernet-header.h"
#include "ethernet-packet.h"
#include "ipv4-header.h"
#include "ipv4-packet.h"
#include "icmp-header.h"
#include "icmp-packet.h"
#include "arp-header.h"
#include "arp-packet.h"
#include "igmpv2-header.h"
#include "igmpv2-packet.h"
#include "udp-header.h"
#include "udp-packet.h"
#include "tcp-header.h"
#include "tcp-packet.h"
#include "rip-header.h"
#include "rip-packet.h"

#include <boost/program_options.hpp>
#include <boost/asio.hpp>

#include <string>

#ifdef WIN32
#include <pcap/pcap.h>
#endif

int WriteDevicesList(const std::string &file_name);
ETHERNETheader MakeEthernetHeader(const boost::program_options::variables_map &var_map);
IPV4header MakeIpv4Header(const boost::program_options::variables_map &var_map);
ICMPheader MakeIcmpHeader(const boost::program_options::variables_map &var_map);
UDPheader MakeUdpHeader(const boost::program_options::variables_map &var_map);
UDPpseudoheader MakeUdpPseudoHeader(const boost::program_options::variables_map &var_map);
IGMPv2header MakeIgmpv2Header(const boost::program_options::variables_map &var_map);
ARPheader MakeArpHeader(const boost::program_options::variables_map &var_map);
TCPheader MakeTcpHeader(const boost::program_options::variables_map &var_map);
TCPpseudoheader MakeTcpPseudoHeader(const boost::program_options::variables_map &var_map);
RIPheader MakeRipHeader(const boost::program_options::variables_map &var_map);

#endif //PCRAFT_TOOL_H